package com.proxy.cglib;

import net.sf.cglib.beans.BulkBean;

public class BulkBeanDemo {

	public static void main(String[] args) {
		//相比于BeanCopier，BulkBean将copy的动作拆分为getPropertyValues和setPropertyValues两个方法，允许自定义处理属性
		//使用注意：
		//1. 避免每次进行BulkBean.create创建对象，一般将其声明为static的
		//2. 应用场景：针对特定属性的get,set操作，一般适用通过xml配置注入和注出的属性，运行时才确定处理的Source,Target类，只需要关注属性名即可。
		BulkBean bulkBean = BulkBean.create(SampleBean.class,
	            new String[]{"getValue"},
	            new String[]{"setValue"},
	            new Class[]{String.class});
	    SampleBean bean = new SampleBean();
	    bean.setValue("Hello world");
	    Object[] propertyValues = bulkBean.getPropertyValues(bean);
	    System.out.println(bulkBean.getPropertyValues(bean).length);
	    System.out.println(bulkBean.getPropertyValues(bean)[0]);
	    bulkBean.setPropertyValues(bean, new Object[]{"Hello cglib"});
	    System.out.println(bean.getValue());
	}

}
